<?php defined('CROSSPHP_PATH')or die('Access Denied');

class Response
{
    static public $statusDescriptions = array(
      100 => 'Continue',
      101 => 'Switching Protocols',

      200 => 'OK',
      201 => 'Created',
      202 => 'Accepted',
      203 => 'Non-Authoritative Information',
      204 => 'No Content',
      205 => 'Reset Content',
      206 => 'Partial Content',

      300 => 'Multiple Choices',
      301 => 'Moved Permanently',
      302 => 'Found',
      303 => 'See Other',
      304 => 'Not Modified',
      305 => 'Use Proxy',
      307 => 'Temporary Redirect',

      400 => 'Bad Request',
      401 => 'Unauthorized',
      403 => 'Forbidden',
      404 => 'Not Found',
      405 => 'Method Not Allowed',
      406 => 'Not Acceptable',
      407 => 'Proxy Authentication Required',
      408 => 'Request Timeout',
      409 => 'Conflict',
      410 => 'Gone',
      411 => 'Length Required',
      412 => 'Precondition Failed',
      413 => 'Request Entity Too Large',
      414 => 'Request-URI Too Long',
      415 => 'Unsupported Media Type',
      416 => 'Requested Range Not Satisfiable',
      417 => 'Expectation Failed',

      500 => 'Internal Server Error',
      501 => 'Not Implemented',
      502 => 'Bad Gateway',
      503 => 'Service Unavailable',
      504 => 'Gateway Timeout',
      505 => 'HTTP Version Not Supported'
    );

    function __construct()
    {

    }

    static function sendStatus($code) {
        header("HTTP/1.1 ".$code);
    }

    static function message($code=200, $message=null, $tpl=null)
    {
        if(!$message) {
            $message = self::$statusDescriptions[$code];
        }

        if($code != 200) {
            self::sendStatus($code);
        }
        
        if( file_exists($tpl) ) {
            return include $tpl;
        } else {
            var_export($message);
        }
    }
}

